/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Raytracing;

import processing.core.PVector;

/**
 *
 * @author Matt
 */
public class FresnelConductor extends Fresnel{

    public float eta;
    public float k;

    public FresnelConductor(float eta, float k) {
        this.eta = eta;
        this.k = k;
    }

    public PVector getFresnel(float cosi) {

        cosi = Math.abs(cosi);

        float tmp = (eta * eta + k * k) * cosi * cosi;
        float rparl2 = (tmp - (2.f * eta * cosi) + 1)
                / (tmp + (2.f * eta * cosi) + 1);

        float tmp_f = eta * eta + k * k;
        float rperp2 = (tmp_f - (2.f * eta * cosi) + cosi * cosi)
                / (tmp_f + (2.f * eta * cosi) + cosi * cosi);

        float mtemp = (rparl2 + rperp2) / 2.f;
        return new PVector(mtemp, mtemp, mtemp);


    }
}
